package com.cskaoyan.javase.array._4operation._0traverse;

import java.lang.reflect.Array;
import java.util.Arrays;

/**
 * 数组元素的遍历是需要循环来完成的
 * 有以下两种方式:
 *      1.普通的for循环实现,快捷键是数组名.fori
 *      2.增强for循环,也叫foreach
 *          增强for最主要的作用是遍历容器,尤其是集合容器,在集合中使用更多
 *          今天我们只要会用就行了,具体的原理等到集合时再讲.
 *
 *          增强for的语法:
 *          for(数据类型 容器中变量的名字 : 被遍历的容器名){
 *              // 注意该循环体中,容器中变量的名字,就是容器中的每一个元素
 *          }
 *          数据类型是容器中元素的数据类型
 *          普通for循环的遍历实际上遍历数组的下标
 *          但是增强for循环,直接遍历容器中的元素
 *
 * 增强for的优点:
 *      1.最主要的优点是效率高
 *      2.并且语法简洁
 *          配合快捷键"iter"使用,也很方便
 *
 * 增强for循环的局限性:
 *      1.最重要的是,增强for是迭代器,它的作用仅仅是遍历访问容器中的元素
 *          是不能用于修改容器中元素的取值的
 *          只能访问,不能修改
 *
 *      2.增强for循环中是没有数组下标存在的,但是很多时候我们需要使用数组下标
 *          那么这时就不能用增强for了
 *
 * 综上,如果仅是访问数组元素不做修改,建议优先使用增强for,因为它方便效率高
 * 但是一旦有修改的需求了,就不能用增强for了,必须使用普通for循环
 *
 *
 * @since 16:11
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo3 {
    public static void main(String[] args) {
        String[] arr = {"123", "456", "789"};
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
        System.out.println("--------------------");
        for (String str : arr) {
            System.out.println(str);
        }

        // 增强for的快捷键iter
        for (String a : arr) {
            System.out.println(a);
        }
        System.out.println("--------------------------");
        int[] arr2 = {1, 2, 3};
        for (int num : arr2) {
            num = 100;
        }
        System.out.println(Arrays.toString(arr2));

        for (int i = 0; i < arr2.length; i++) {
            arr2[i] = 100;
        }
        System.out.println(Arrays.toString(arr2));
    }
}
